package com.nami.ucenter.domain.port.repository;


import com.nami.gate.external.basic.cache.user.DeviceInfo;
import com.nami.gate.external.basic.cache.user.UserDeviceRel;
import com.nami.ucenter.domain.model.UserLoginModel;

import java.util.List;

/**
 * 大部分需要删除，只保留行为，与改变状态de方法.
 */
public interface CacheUserRepository {
    List<DeviceInfo> getOnlDevicesByUserId(String appKey, String userId, Integer excludeDeviceType);
    boolean updOnlUser(UserDeviceRel userWrap);
    UserDeviceRel getOnlUser(String appKey, String userId);
    List<UserDeviceRel> getOnlUsers(String appKey, List<String> userIds);
    DeviceInfo getDeviceInfo(String appKey, String userId, Integer deviceType);

    // ================================================上方择机删除==================================================================
    /**
     * 登录
     *
     * @param userModel
     * @return
     */
    boolean userLoginWithLock(UserLoginModel userModel);
    /**
     * 校验设备是否在线，有则返回mqTags
     *
     * @param appKey
     * @param userId
     * @param instanceId
     * @return
     */
    String getUserMqTags(String appKey, String userId, String instanceId);
    boolean removeOnlDevice(String appKey, String userId, String instanceId);
}
